// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Google Play Game Services Management API Version v1management
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://developers.google.com/games/services'>Google Play Game Services Management API</a>
 *      <tr><th>API Version<td>v1management
 *      <tr><th>API Rev<td>20170316 (805)
 *      <tr><th>API Docs
 *          <td><a href='https://developers.google.com/games/services'>
 *              https://developers.google.com/games/services</a>
 *      <tr><th>Discovery Name<td>gamesManagement
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Google Play Game Services Management API can be found at
 * <a href='https://developers.google.com/games/services'>https://developers.google.com/games/services</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.GamesManagement.v1management
{
    /// <summary>The GamesManagement Service.</summary>
    public class GamesManagementService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v1management";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public GamesManagementService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public GamesManagementService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            achievements = new AchievementsResource(this);
            applications = new ApplicationsResource(this);
            events = new EventsResource(this);
            players = new PlayersResource(this);
            quests = new QuestsResource(this);
            rooms = new RoomsResource(this);
            scores = new ScoresResource(this);
            turnBasedMatches = new TurnBasedMatchesResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "gamesManagement"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://www.googleapis.com/games/v1management/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return "games/v1management/"; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Google Play Game Services Management API.</summary>
        public class Scope
        {
            /// <summary>Share your Google+ profile information and view and manage your game activity</summary>
            public static string Games = "https://www.googleapis.com/auth/games";

            /// <summary>Know the list of people in your circles, your age range, and language</summary>
            public static string PlusLogin = "https://www.googleapis.com/auth/plus.login";

        }



        private readonly AchievementsResource achievements;

        /// <summary>Gets the Achievements resource.</summary>
        public virtual AchievementsResource Achievements
        {
            get { return achievements; }
        }

        private readonly ApplicationsResource applications;

        /// <summary>Gets the Applications resource.</summary>
        public virtual ApplicationsResource Applications
        {
            get { return applications; }
        }

        private readonly EventsResource events;

        /// <summary>Gets the Events resource.</summary>
        public virtual EventsResource Events
        {
            get { return events; }
        }

        private readonly PlayersResource players;

        /// <summary>Gets the Players resource.</summary>
        public virtual PlayersResource Players
        {
            get { return players; }
        }

        private readonly QuestsResource quests;

        /// <summary>Gets the Quests resource.</summary>
        public virtual QuestsResource Quests
        {
            get { return quests; }
        }

        private readonly RoomsResource rooms;

        /// <summary>Gets the Rooms resource.</summary>
        public virtual RoomsResource Rooms
        {
            get { return rooms; }
        }

        private readonly ScoresResource scores;

        /// <summary>Gets the Scores resource.</summary>
        public virtual ScoresResource Scores
        {
            get { return scores; }
        }

        private readonly TurnBasedMatchesResource turnBasedMatches;

        /// <summary>Gets the TurnBasedMatches resource.</summary>
        public virtual TurnBasedMatchesResource TurnBasedMatches
        {
            get { return turnBasedMatches; }
        }
    }

    ///<summary>A base abstract class for GamesManagement requests.</summary>
    public abstract class GamesManagementBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new GamesManagementBaseServiceRequest instance.</summary>
        protected GamesManagementBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>Data format for the response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for the response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
        }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-user
        /// limits.</summary>
        [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UserIp { get; set; }

        /// <summary>Initializes GamesManagement parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "userIp", new Google.Apis.Discovery.Parameter
                {
                    Name = "userIp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "achievements" collection of methods.</summary>
    public class AchievementsResource
    {
        private const string Resource = "achievements";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public AchievementsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Resets the achievement with the given ID for the currently authenticated player. This method is
        /// only accessible to whitelisted tester accounts for your application.</summary>
        /// <param name="achievementId">The ID of the achievement used by this method.</param>
        public virtual ResetRequest Reset(string achievementId)
        {
            return new ResetRequest(service, achievementId);
        }

        /// <summary>Resets the achievement with the given ID for the currently authenticated player. This method is
        /// only accessible to whitelisted tester accounts for your application.</summary>
        public class ResetRequest : GamesManagementBaseServiceRequest<Google.Apis.GamesManagement.v1management.Data.AchievementResetResponse>
        {
            /// <summary>Constructs a new Reset request.</summary>
            public ResetRequest(Google.Apis.Services.IClientService service, string achievementId)
                : base(service)
            {
                AchievementId = achievementId;
                InitParameters();
            }


            /// <summary>The ID of the achievement used by this method.</summary>
            [Google.Apis.Util.RequestParameterAttribute("achievementId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string AchievementId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reset"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "achievements/{achievementId}/reset"; }
            }

            /// <summary>Initializes Reset parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "achievementId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "achievementId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets all achievements for the currently authenticated player for your application. This method is
        /// only accessible to whitelisted tester accounts for your application.</summary>
        public virtual ResetAllRequest ResetAll()
        {
            return new ResetAllRequest(service);
        }

        /// <summary>Resets all achievements for the currently authenticated player for your application. This method is
        /// only accessible to whitelisted tester accounts for your application.</summary>
        public class ResetAllRequest : GamesManagementBaseServiceRequest<Google.Apis.GamesManagement.v1management.Data.AchievementResetAllResponse>
        {
            /// <summary>Constructs a new ResetAll request.</summary>
            public ResetAllRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAll"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "achievements/reset"; }
            }

            /// <summary>Initializes ResetAll parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets all draft achievements for all players. This method is only available to user accounts for
        /// your developer console.</summary>
        public virtual ResetAllForAllPlayersRequest ResetAllForAllPlayers()
        {
            return new ResetAllForAllPlayersRequest(service);
        }

        /// <summary>Resets all draft achievements for all players. This method is only available to user accounts for
        /// your developer console.</summary>
        public class ResetAllForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetAllForAllPlayers request.</summary>
            public ResetAllForAllPlayersRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAllForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "achievements/resetAllForAllPlayers"; }
            }

            /// <summary>Initializes ResetAllForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets the achievement with the given ID for all players. This method is only available to user
        /// accounts for your developer console. Only draft achievements can be reset.</summary>
        /// <param name="achievementId">The ID of the achievement used by this method.</param>
        public virtual ResetForAllPlayersRequest ResetForAllPlayers(string achievementId)
        {
            return new ResetForAllPlayersRequest(service, achievementId);
        }

        /// <summary>Resets the achievement with the given ID for all players. This method is only available to user
        /// accounts for your developer console. Only draft achievements can be reset.</summary>
        public class ResetForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetForAllPlayers request.</summary>
            public ResetForAllPlayersRequest(Google.Apis.Services.IClientService service, string achievementId)
                : base(service)
            {
                AchievementId = achievementId;
                InitParameters();
            }


            /// <summary>The ID of the achievement used by this method.</summary>
            [Google.Apis.Util.RequestParameterAttribute("achievementId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string AchievementId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "achievements/{achievementId}/resetForAllPlayers"; }
            }

            /// <summary>Initializes ResetForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "achievementId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "achievementId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets achievements with the given IDs for all players. This method is only available to user
        /// accounts for your developer console. Only draft achievements may be reset.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual ResetMultipleForAllPlayersRequest ResetMultipleForAllPlayers(Google.Apis.GamesManagement.v1management.Data.AchievementResetMultipleForAllRequest body)
        {
            return new ResetMultipleForAllPlayersRequest(service, body);
        }

        /// <summary>Resets achievements with the given IDs for all players. This method is only available to user
        /// accounts for your developer console. Only draft achievements may be reset.</summary>
        public class ResetMultipleForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetMultipleForAllPlayers request.</summary>
            public ResetMultipleForAllPlayersRequest(Google.Apis.Services.IClientService service, Google.Apis.GamesManagement.v1management.Data.AchievementResetMultipleForAllRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.GamesManagement.v1management.Data.AchievementResetMultipleForAllRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetMultipleForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "achievements/resetMultipleForAllPlayers"; }
            }

            /// <summary>Initializes ResetMultipleForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }

    /// <summary>The "applications" collection of methods.</summary>
    public class ApplicationsResource
    {
        private const string Resource = "applications";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ApplicationsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Get the list of players hidden from the given application. This method is only available to user
        /// accounts for your developer console.</summary>
        /// <param name="applicationId">The application ID from the Google Play developer console.</param>
        public virtual ListHiddenRequest ListHidden(string applicationId)
        {
            return new ListHiddenRequest(service, applicationId);
        }

        /// <summary>Get the list of players hidden from the given application. This method is only available to user
        /// accounts for your developer console.</summary>
        public class ListHiddenRequest : GamesManagementBaseServiceRequest<Google.Apis.GamesManagement.v1management.Data.HiddenPlayerList>
        {
            /// <summary>Constructs a new ListHidden request.</summary>
            public ListHiddenRequest(Google.Apis.Services.IClientService service, string applicationId)
                : base(service)
            {
                ApplicationId = applicationId;
                InitParameters();
            }


            /// <summary>The application ID from the Google Play developer console.</summary>
            [Google.Apis.Util.RequestParameterAttribute("applicationId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ApplicationId { get; private set; }

            /// <summary>The maximum number of player resources to return in the response, used for paging. For any
            /// response, the actual number of player resources returned may be less than the specified
            /// maxResults.</summary>
            /// [minimum: 1]
            /// [maximum: 50]
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<int> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "listHidden"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "applications/{applicationId}/players/hidden"; }
            }

            /// <summary>Initializes ListHidden parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "applicationId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "applicationId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "events" collection of methods.</summary>
    public class EventsResource
    {
        private const string Resource = "events";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public EventsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Resets all player progress on the event with the given ID for the currently authenticated player.
        /// This method is only accessible to whitelisted tester accounts for your application. All quests for this
        /// player that use the event will also be reset.</summary>
        /// <param name="eventId">The ID of the event.</param>
        public virtual ResetRequest Reset(string eventId)
        {
            return new ResetRequest(service, eventId);
        }

        /// <summary>Resets all player progress on the event with the given ID for the currently authenticated player.
        /// This method is only accessible to whitelisted tester accounts for your application. All quests for this
        /// player that use the event will also be reset.</summary>
        public class ResetRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Reset request.</summary>
            public ResetRequest(Google.Apis.Services.IClientService service, string eventId)
                : base(service)
            {
                EventId = eventId;
                InitParameters();
            }


            /// <summary>The ID of the event.</summary>
            [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string EventId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reset"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "events/{eventId}/reset"; }
            }

            /// <summary>Initializes Reset parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "eventId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "eventId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets all player progress on all events for the currently authenticated player. This method is
        /// only accessible to whitelisted tester accounts for your application. All quests for this player will also be
        /// reset.</summary>
        public virtual ResetAllRequest ResetAll()
        {
            return new ResetAllRequest(service);
        }

        /// <summary>Resets all player progress on all events for the currently authenticated player. This method is
        /// only accessible to whitelisted tester accounts for your application. All quests for this player will also be
        /// reset.</summary>
        public class ResetAllRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetAll request.</summary>
            public ResetAllRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAll"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "events/reset"; }
            }

            /// <summary>Initializes ResetAll parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets all draft events for all players. This method is only available to user accounts for your
        /// developer console. All quests that use any of these events will also be reset.</summary>
        public virtual ResetAllForAllPlayersRequest ResetAllForAllPlayers()
        {
            return new ResetAllForAllPlayersRequest(service);
        }

        /// <summary>Resets all draft events for all players. This method is only available to user accounts for your
        /// developer console. All quests that use any of these events will also be reset.</summary>
        public class ResetAllForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetAllForAllPlayers request.</summary>
            public ResetAllForAllPlayersRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAllForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "events/resetAllForAllPlayers"; }
            }

            /// <summary>Initializes ResetAllForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets the event with the given ID for all players. This method is only available to user accounts
        /// for your developer console. Only draft events can be reset. All quests that use the event will also be
        /// reset.</summary>
        /// <param name="eventId">The ID of the event.</param>
        public virtual ResetForAllPlayersRequest ResetForAllPlayers(string eventId)
        {
            return new ResetForAllPlayersRequest(service, eventId);
        }

        /// <summary>Resets the event with the given ID for all players. This method is only available to user accounts
        /// for your developer console. Only draft events can be reset. All quests that use the event will also be
        /// reset.</summary>
        public class ResetForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetForAllPlayers request.</summary>
            public ResetForAllPlayersRequest(Google.Apis.Services.IClientService service, string eventId)
                : base(service)
            {
                EventId = eventId;
                InitParameters();
            }


            /// <summary>The ID of the event.</summary>
            [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string EventId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "events/{eventId}/resetForAllPlayers"; }
            }

            /// <summary>Initializes ResetForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "eventId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "eventId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets events with the given IDs for all players. This method is only available to user accounts
        /// for your developer console. Only draft events may be reset. All quests that use any of the events will also
        /// be reset.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual ResetMultipleForAllPlayersRequest ResetMultipleForAllPlayers(Google.Apis.GamesManagement.v1management.Data.EventsResetMultipleForAllRequest body)
        {
            return new ResetMultipleForAllPlayersRequest(service, body);
        }

        /// <summary>Resets events with the given IDs for all players. This method is only available to user accounts
        /// for your developer console. Only draft events may be reset. All quests that use any of the events will also
        /// be reset.</summary>
        public class ResetMultipleForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetMultipleForAllPlayers request.</summary>
            public ResetMultipleForAllPlayersRequest(Google.Apis.Services.IClientService service, Google.Apis.GamesManagement.v1management.Data.EventsResetMultipleForAllRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.GamesManagement.v1management.Data.EventsResetMultipleForAllRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetMultipleForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "events/resetMultipleForAllPlayers"; }
            }

            /// <summary>Initializes ResetMultipleForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }

    /// <summary>The "players" collection of methods.</summary>
    public class PlayersResource
    {
        private const string Resource = "players";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public PlayersResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Hide the given player's leaderboard scores from the given application. This method is only
        /// available to user accounts for your developer console.</summary>
        /// <param name="applicationId">The application ID from the Google Play developer console.</param>
        /// <param
        /// name="playerId">A player ID. A value of me may be used in place of the authenticated player's ID.</param>
        public virtual HideRequest Hide(string applicationId, string playerId)
        {
            return new HideRequest(service, applicationId, playerId);
        }

        /// <summary>Hide the given player's leaderboard scores from the given application. This method is only
        /// available to user accounts for your developer console.</summary>
        public class HideRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Hide request.</summary>
            public HideRequest(Google.Apis.Services.IClientService service, string applicationId, string playerId)
                : base(service)
            {
                ApplicationId = applicationId;
                PlayerId = playerId;
                InitParameters();
            }


            /// <summary>The application ID from the Google Play developer console.</summary>
            [Google.Apis.Util.RequestParameterAttribute("applicationId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ApplicationId { get; private set; }

            /// <summary>A player ID. A value of me may be used in place of the authenticated player's ID.</summary>
            [Google.Apis.Util.RequestParameterAttribute("playerId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PlayerId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "hide"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "applications/{applicationId}/players/hidden/{playerId}"; }
            }

            /// <summary>Initializes Hide parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "applicationId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "applicationId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "playerId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "playerId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Unhide the given player's leaderboard scores from the given application. This method is only
        /// available to user accounts for your developer console.</summary>
        /// <param name="applicationId">The application ID from the Google Play developer console.</param>
        /// <param
        /// name="playerId">A player ID. A value of me may be used in place of the authenticated player's ID.</param>
        public virtual UnhideRequest Unhide(string applicationId, string playerId)
        {
            return new UnhideRequest(service, applicationId, playerId);
        }

        /// <summary>Unhide the given player's leaderboard scores from the given application. This method is only
        /// available to user accounts for your developer console.</summary>
        public class UnhideRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Unhide request.</summary>
            public UnhideRequest(Google.Apis.Services.IClientService service, string applicationId, string playerId)
                : base(service)
            {
                ApplicationId = applicationId;
                PlayerId = playerId;
                InitParameters();
            }


            /// <summary>The application ID from the Google Play developer console.</summary>
            [Google.Apis.Util.RequestParameterAttribute("applicationId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ApplicationId { get; private set; }

            /// <summary>A player ID. A value of me may be used in place of the authenticated player's ID.</summary>
            [Google.Apis.Util.RequestParameterAttribute("playerId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PlayerId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "unhide"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "applications/{applicationId}/players/hidden/{playerId}"; }
            }

            /// <summary>Initializes Unhide parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "applicationId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "applicationId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "playerId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "playerId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "quests" collection of methods.</summary>
    public class QuestsResource
    {
        private const string Resource = "quests";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public QuestsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Resets all player progress on the quest with the given ID for the currently authenticated player.
        /// This method is only accessible to whitelisted tester accounts for your application.</summary>
        /// <param name="questId">The ID of the quest.</param>
        public virtual ResetRequest Reset(string questId)
        {
            return new ResetRequest(service, questId);
        }

        /// <summary>Resets all player progress on the quest with the given ID for the currently authenticated player.
        /// This method is only accessible to whitelisted tester accounts for your application.</summary>
        public class ResetRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Reset request.</summary>
            public ResetRequest(Google.Apis.Services.IClientService service, string questId)
                : base(service)
            {
                QuestId = questId;
                InitParameters();
            }


            /// <summary>The ID of the quest.</summary>
            [Google.Apis.Util.RequestParameterAttribute("questId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string QuestId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reset"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "quests/{questId}/reset"; }
            }

            /// <summary>Initializes Reset parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "questId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "questId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets all player progress on all quests for the currently authenticated player. This method is
        /// only accessible to whitelisted tester accounts for your application.</summary>
        public virtual ResetAllRequest ResetAll()
        {
            return new ResetAllRequest(service);
        }

        /// <summary>Resets all player progress on all quests for the currently authenticated player. This method is
        /// only accessible to whitelisted tester accounts for your application.</summary>
        public class ResetAllRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetAll request.</summary>
            public ResetAllRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAll"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "quests/reset"; }
            }

            /// <summary>Initializes ResetAll parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets all draft quests for all players. This method is only available to user accounts for your
        /// developer console.</summary>
        public virtual ResetAllForAllPlayersRequest ResetAllForAllPlayers()
        {
            return new ResetAllForAllPlayersRequest(service);
        }

        /// <summary>Resets all draft quests for all players. This method is only available to user accounts for your
        /// developer console.</summary>
        public class ResetAllForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetAllForAllPlayers request.</summary>
            public ResetAllForAllPlayersRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAllForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "quests/resetAllForAllPlayers"; }
            }

            /// <summary>Initializes ResetAllForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets all player progress on the quest with the given ID for all players. This method is only
        /// available to user accounts for your developer console. Only draft quests can be reset.</summary>
        /// <param name="questId">The ID of the quest.</param>
        public virtual ResetForAllPlayersRequest ResetForAllPlayers(string questId)
        {
            return new ResetForAllPlayersRequest(service, questId);
        }

        /// <summary>Resets all player progress on the quest with the given ID for all players. This method is only
        /// available to user accounts for your developer console. Only draft quests can be reset.</summary>
        public class ResetForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetForAllPlayers request.</summary>
            public ResetForAllPlayersRequest(Google.Apis.Services.IClientService service, string questId)
                : base(service)
            {
                QuestId = questId;
                InitParameters();
            }


            /// <summary>The ID of the quest.</summary>
            [Google.Apis.Util.RequestParameterAttribute("questId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string QuestId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "quests/{questId}/resetForAllPlayers"; }
            }

            /// <summary>Initializes ResetForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "questId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "questId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets quests with the given IDs for all players. This method is only available to user accounts
        /// for your developer console. Only draft quests may be reset.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual ResetMultipleForAllPlayersRequest ResetMultipleForAllPlayers(Google.Apis.GamesManagement.v1management.Data.QuestsResetMultipleForAllRequest body)
        {
            return new ResetMultipleForAllPlayersRequest(service, body);
        }

        /// <summary>Resets quests with the given IDs for all players. This method is only available to user accounts
        /// for your developer console. Only draft quests may be reset.</summary>
        public class ResetMultipleForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetMultipleForAllPlayers request.</summary>
            public ResetMultipleForAllPlayersRequest(Google.Apis.Services.IClientService service, Google.Apis.GamesManagement.v1management.Data.QuestsResetMultipleForAllRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.GamesManagement.v1management.Data.QuestsResetMultipleForAllRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetMultipleForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "quests/resetMultipleForAllPlayers"; }
            }

            /// <summary>Initializes ResetMultipleForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }

    /// <summary>The "rooms" collection of methods.</summary>
    public class RoomsResource
    {
        private const string Resource = "rooms";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public RoomsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Reset all rooms for the currently authenticated player for your application. This method is only
        /// accessible to whitelisted tester accounts for your application.</summary>
        public virtual ResetRequest Reset()
        {
            return new ResetRequest(service);
        }

        /// <summary>Reset all rooms for the currently authenticated player for your application. This method is only
        /// accessible to whitelisted tester accounts for your application.</summary>
        public class ResetRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Reset request.</summary>
            public ResetRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reset"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "rooms/reset"; }
            }

            /// <summary>Initializes Reset parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Deletes rooms where the only room participants are from whitelisted tester accounts for your
        /// application. This method is only available to user accounts for your developer console.</summary>
        public virtual ResetForAllPlayersRequest ResetForAllPlayers()
        {
            return new ResetForAllPlayersRequest(service);
        }

        /// <summary>Deletes rooms where the only room participants are from whitelisted tester accounts for your
        /// application. This method is only available to user accounts for your developer console.</summary>
        public class ResetForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetForAllPlayers request.</summary>
            public ResetForAllPlayersRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "rooms/resetForAllPlayers"; }
            }

            /// <summary>Initializes ResetForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }

    /// <summary>The "scores" collection of methods.</summary>
    public class ScoresResource
    {
        private const string Resource = "scores";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ScoresResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Resets scores for the leaderboard with the given ID for the currently authenticated player. This
        /// method is only accessible to whitelisted tester accounts for your application.</summary>
        /// <param name="leaderboardId">The ID of the leaderboard.</param>
        public virtual ResetRequest Reset(string leaderboardId)
        {
            return new ResetRequest(service, leaderboardId);
        }

        /// <summary>Resets scores for the leaderboard with the given ID for the currently authenticated player. This
        /// method is only accessible to whitelisted tester accounts for your application.</summary>
        public class ResetRequest : GamesManagementBaseServiceRequest<Google.Apis.GamesManagement.v1management.Data.PlayerScoreResetResponse>
        {
            /// <summary>Constructs a new Reset request.</summary>
            public ResetRequest(Google.Apis.Services.IClientService service, string leaderboardId)
                : base(service)
            {
                LeaderboardId = leaderboardId;
                InitParameters();
            }


            /// <summary>The ID of the leaderboard.</summary>
            [Google.Apis.Util.RequestParameterAttribute("leaderboardId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string LeaderboardId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reset"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "leaderboards/{leaderboardId}/scores/reset"; }
            }

            /// <summary>Initializes Reset parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "leaderboardId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "leaderboardId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets all scores for all leaderboards for the currently authenticated players. This method is only
        /// accessible to whitelisted tester accounts for your application.</summary>
        public virtual ResetAllRequest ResetAll()
        {
            return new ResetAllRequest(service);
        }

        /// <summary>Resets all scores for all leaderboards for the currently authenticated players. This method is only
        /// accessible to whitelisted tester accounts for your application.</summary>
        public class ResetAllRequest : GamesManagementBaseServiceRequest<Google.Apis.GamesManagement.v1management.Data.PlayerScoreResetAllResponse>
        {
            /// <summary>Constructs a new ResetAll request.</summary>
            public ResetAllRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAll"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "scores/reset"; }
            }

            /// <summary>Initializes ResetAll parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets scores for all draft leaderboards for all players. This method is only available to user
        /// accounts for your developer console.</summary>
        public virtual ResetAllForAllPlayersRequest ResetAllForAllPlayers()
        {
            return new ResetAllForAllPlayersRequest(service);
        }

        /// <summary>Resets scores for all draft leaderboards for all players. This method is only available to user
        /// accounts for your developer console.</summary>
        public class ResetAllForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetAllForAllPlayers request.</summary>
            public ResetAllForAllPlayersRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetAllForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "scores/resetAllForAllPlayers"; }
            }

            /// <summary>Initializes ResetAllForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Resets scores for the leaderboard with the given ID for all players. This method is only available
        /// to user accounts for your developer console. Only draft leaderboards can be reset.</summary>
        /// <param name="leaderboardId">The ID of the leaderboard.</param>
        public virtual ResetForAllPlayersRequest ResetForAllPlayers(string leaderboardId)
        {
            return new ResetForAllPlayersRequest(service, leaderboardId);
        }

        /// <summary>Resets scores for the leaderboard with the given ID for all players. This method is only available
        /// to user accounts for your developer console. Only draft leaderboards can be reset.</summary>
        public class ResetForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetForAllPlayers request.</summary>
            public ResetForAllPlayersRequest(Google.Apis.Services.IClientService service, string leaderboardId)
                : base(service)
            {
                LeaderboardId = leaderboardId;
                InitParameters();
            }


            /// <summary>The ID of the leaderboard.</summary>
            [Google.Apis.Util.RequestParameterAttribute("leaderboardId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string LeaderboardId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "leaderboards/{leaderboardId}/scores/resetForAllPlayers"; }
            }

            /// <summary>Initializes ResetForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "leaderboardId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "leaderboardId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Resets scores for the leaderboards with the given IDs for all players. This method is only
        /// available to user accounts for your developer console. Only draft leaderboards may be reset.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual ResetMultipleForAllPlayersRequest ResetMultipleForAllPlayers(Google.Apis.GamesManagement.v1management.Data.ScoresResetMultipleForAllRequest body)
        {
            return new ResetMultipleForAllPlayersRequest(service, body);
        }

        /// <summary>Resets scores for the leaderboards with the given IDs for all players. This method is only
        /// available to user accounts for your developer console. Only draft leaderboards may be reset.</summary>
        public class ResetMultipleForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetMultipleForAllPlayers request.</summary>
            public ResetMultipleForAllPlayersRequest(Google.Apis.Services.IClientService service, Google.Apis.GamesManagement.v1management.Data.ScoresResetMultipleForAllRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.GamesManagement.v1management.Data.ScoresResetMultipleForAllRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetMultipleForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "scores/resetMultipleForAllPlayers"; }
            }

            /// <summary>Initializes ResetMultipleForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }

    /// <summary>The "turnBasedMatches" collection of methods.</summary>
    public class TurnBasedMatchesResource
    {
        private const string Resource = "turnBasedMatches";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public TurnBasedMatchesResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Reset all turn-based match data for a user. This method is only accessible to whitelisted tester
        /// accounts for your application.</summary>
        public virtual ResetRequest Reset()
        {
            return new ResetRequest(service);
        }

        /// <summary>Reset all turn-based match data for a user. This method is only accessible to whitelisted tester
        /// accounts for your application.</summary>
        public class ResetRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Reset request.</summary>
            public ResetRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reset"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "turnbasedmatches/reset"; }
            }

            /// <summary>Initializes Reset parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Deletes turn-based matches where the only match participants are from whitelisted tester accounts
        /// for your application. This method is only available to user accounts for your developer console.</summary>
        public virtual ResetForAllPlayersRequest ResetForAllPlayers()
        {
            return new ResetForAllPlayersRequest(service);
        }

        /// <summary>Deletes turn-based matches where the only match participants are from whitelisted tester accounts
        /// for your application. This method is only available to user accounts for your developer console.</summary>
        public class ResetForAllPlayersRequest : GamesManagementBaseServiceRequest<string>
        {
            /// <summary>Constructs a new ResetForAllPlayers request.</summary>
            public ResetForAllPlayersRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetForAllPlayers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "turnbasedmatches/resetForAllPlayers"; }
            }

            /// <summary>Initializes ResetForAllPlayers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }
}

namespace Google.Apis.GamesManagement.v1management.Data
{    

    /// <summary>This is a JSON template for achievement reset all response.</summary>
    public class AchievementResetAllResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#achievementResetAllResponse.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The achievement reset results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("results")]
        public virtual System.Collections.Generic.IList<AchievementResetResponse> Results { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for multiple achievements reset all request.</summary>
    public class AchievementResetMultipleForAllRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The IDs of achievements to reset.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("achievement_ids")]
        public virtual System.Collections.Generic.IList<string> AchievementIds { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#achievementResetMultipleForAllRequest.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for an achievement reset response.</summary>
    public class AchievementResetResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The current state of the achievement. This is the same as the initial state of the achievement.
        /// Possible values are: - "HIDDEN"- Achievement is hidden. - "REVEALED" - Achievement is revealed. - "UNLOCKED"
        /// - Achievement is unlocked.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("currentState")]
        public virtual string CurrentState { get; set; } 

        /// <summary>The ID of an achievement for which player state has been updated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("definitionId")]
        public virtual string DefinitionId { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#achievementResetResponse.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Flag to indicate if the requested update actually occurred.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("updateOccurred")]
        public virtual System.Nullable<bool> UpdateOccurred { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for multiple events reset all request.</summary>
    public class EventsResetMultipleForAllRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The IDs of events to reset.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("event_ids")]
        public virtual System.Collections.Generic.IList<string> EventIds { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#eventsResetMultipleForAllRequest.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for metadata about a player playing a game with the currently authenticated
    /// user.</summary>
    public class GamesPlayedResource : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>True if the player was auto-matched with the currently authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("autoMatched")]
        public virtual System.Nullable<bool> AutoMatched { get; set; } 

        /// <summary>The last time the player played the game in milliseconds since the epoch in UTC.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timeMillis")]
        public virtual System.Nullable<long> TimeMillis { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for 1P/3P metadata about the player's experience.</summary>
    public class GamesPlayerExperienceInfoResource : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The current number of experience points for the player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("currentExperiencePoints")]
        public virtual System.Nullable<long> CurrentExperiencePoints { get; set; } 

        /// <summary>The current level of the player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("currentLevel")]
        public virtual GamesPlayerLevelResource CurrentLevel { get; set; } 

        /// <summary>The timestamp when the player was leveled up, in millis since Unix epoch UTC.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastLevelUpTimestampMillis")]
        public virtual System.Nullable<long> LastLevelUpTimestampMillis { get; set; } 

        /// <summary>The next level of the player. If the current level is the maximum level, this should be same as the
        /// current level.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextLevel")]
        public virtual GamesPlayerLevelResource NextLevel { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for 1P/3P metadata about a user's level.</summary>
    public class GamesPlayerLevelResource : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The level for the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("level")]
        public virtual System.Nullable<int> Level { get; set; } 

        /// <summary>The maximum experience points for this level.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxExperiencePoints")]
        public virtual System.Nullable<long> MaxExperiencePoints { get; set; } 

        /// <summary>The minimum experience points for this level.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minExperiencePoints")]
        public virtual System.Nullable<long> MinExperiencePoints { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for the HiddenPlayer resource.</summary>
    public class HiddenPlayer : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The time this player was hidden.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hiddenTimeMillis")]
        public virtual System.Nullable<long> HiddenTimeMillis { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#hiddenPlayer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The player information.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("player")]
        public virtual Player Player { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for a list of hidden players.</summary>
    public class HiddenPlayerList : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The players.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("items")]
        public virtual System.Collections.Generic.IList<HiddenPlayer> Items { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#hiddenPlayerList.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The pagination token for the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for a Player resource.</summary>
    public class Player : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The base URL for the image that represents the player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("avatarImageUrl")]
        public virtual string AvatarImageUrl { get; set; } 

        /// <summary>The url to the landscape mode player banner image.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("bannerUrlLandscape")]
        public virtual string BannerUrlLandscape { get; set; } 

        /// <summary>The url to the portrait mode player banner image.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("bannerUrlPortrait")]
        public virtual string BannerUrlPortrait { get; set; } 

        /// <summary>The name to display for the player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>An object to represent Play Game experience information for the player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("experienceInfo")]
        public virtual GamesPlayerExperienceInfoResource ExperienceInfo { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Details about the last time this player played a multiplayer game with the currently authenticated
        /// player. Populated for PLAYED_WITH player collection members.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastPlayedWith")]
        public virtual GamesPlayedResource LastPlayedWith { get; set; } 

        /// <summary>An object representation of the individual components of the player's name. For some players, these
        /// fields may not be present.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual Player.NameData Name { get; set; } 

        /// <summary>The player ID that was used for this player the first time they signed into the game in question.
        /// This is only populated for calls to player.get for the requesting player, only if the player ID has
        /// subsequently changed, and only to clients that support remapping player IDs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("originalPlayerId")]
        public virtual string OriginalPlayerId { get; set; } 

        /// <summary>The ID of the player.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("playerId")]
        public virtual string PlayerId { get; set; } 

        /// <summary>The player's profile settings. Controls whether or not the player's profile is visible to other
        /// players.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("profileSettings")]
        public virtual ProfileSettings ProfileSettings { get; set; } 

        /// <summary>The player's title rewarded for their game activities.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
        

        /// <summary>An object representation of the individual components of the player's name. For some players, these
        /// fields may not be present.</summary>
        public class NameData
        {
            /// <summary>The family name of this player. In some places, this is known as the last name.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("familyName")]
            public virtual string FamilyName { get; set; } 

            /// <summary>The given name of this player. In some places, this is known as the first name.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("givenName")]
            public virtual string GivenName { get; set; } 

        }
    }    

    /// <summary>This is a JSON template for a list of leaderboard reset resources.</summary>
    public class PlayerScoreResetAllResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#playerScoreResetResponse.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The leaderboard reset results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("results")]
        public virtual System.Collections.Generic.IList<PlayerScoreResetResponse> Results { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for a list of reset leaderboard entry resources.</summary>
    public class PlayerScoreResetResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of an leaderboard for which player state has been updated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("definitionId")]
        public virtual string DefinitionId { get; set; } 

        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#playerScoreResetResponse.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The time spans of the updated score. Possible values are: - "ALL_TIME" - The score is an all-time
        /// score. - "WEEKLY" - The score is a weekly score. - "DAILY" - The score is a daily score.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resetScoreTimeSpans")]
        public virtual System.Collections.Generic.IList<string> ResetScoreTimeSpans { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for profile settings</summary>
    public class ProfileSettings : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#profileSettings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The player's current profile visibility. This field is visible to both 1P and 3P APIs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("profileVisible")]
        public virtual System.Nullable<bool> ProfileVisible { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for multiple quests reset all request.</summary>
    public class QuestsResetMultipleForAllRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#questsResetMultipleForAllRequest.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The IDs of quests to reset.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quest_ids")]
        public virtual System.Collections.Generic.IList<string> QuestIds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This is a JSON template for multiple scores reset all request.</summary>
    public class ScoresResetMultipleForAllRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Uniquely identifies the type of this resource. Value is always the fixed string
        /// gamesManagement#scoresResetMultipleForAllRequest.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The IDs of leaderboards to reset.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("leaderboard_ids")]
        public virtual System.Collections.Generic.IList<string> LeaderboardIds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
